.de L		\" literal font
.ft 5
.it 1 }N
.if !\\$1 \&\\$1 \\$2 \\$3 \\$4 \\$5 \\$6
..
.de LR
.}S 5 1 \& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
..
.de RL
.}S 1 5 \& "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
..
.de EX		\" start example
.ta 1i 2i 3i 4i 5i 6i
.PP
.RS 
.PD 0
.ft 5
.nf
..
.de EE		\" end example
.fi
.ft
.PD
.RE
.PP
..
.TH AST 3
.SH NAME
expr \- c-like expression library
.SH SYNOPSIS
.EX
#include <graphviz/expr.h>

Expr_t*          exopen(Exdisc_t*);
Excc_t*          exccopen(Expr_t*, Exccdisc_t*);
int              exccclose(Excc_t*);
void             exclose(Expr_t*, int);
char*            excontext(Expr_t*, char*, int);
void             exerror(const char*, ...);
Extype_t         exeval(Expr_t*, Exnode_t*, void*);
Exnode_t*        exexpr(Expr_t*, const char*, Exid_t*, int);

Exnode_t*        excast(Expr_t*, Exnode_t*, int, Exnode_t*, int);
Exnode_t*        exnewnode(Expr_t*, int, int, int, Exnode_t*, Exnode_t*);
void             exfreenode(Expr_t*, Exnode_t*);
int              expush(Expr_t*, const char*, int, const char*, FILE*);
int              expop(Expr_t*);
int              excomp(Expr_t*, const char*, int, const char*, FILE*);
int              extoken(Expr_t*);
char*            extype(long int);
Extype_t         exzero(long int);

.EE
.SH DESCRIPTION

exopen() is the first function called.
exclose() is the last function called.
exccopen() is the called if code generation will be used.
exccclose() releases the state information allocated in exccopen().

.SH "SEE ALSO"
